package com.esint;

import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Map;

/**
 * @description: redis Hash类型测试类
 * @author: 谷明
 * @createDate: 2021/8/12 1:36
 */
public class TestHash {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.43.166", 6379);
        jedis.flushDB();

        Map<String, String> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        map.put("key4", "value4");
        map.put("key7", "value7");
        map.put("key8", "8");

        //添加一个Hash类型元素到redis中
        jedis.hmset("hash", map);
        //向刚添加的元素的value（HashMap）中再添加一个key value
        jedis.hset("hash", "key5", "value5");
        System.out.println("获取散列hash的所有键值对：" + jedis.hgetAll("hash"));
        System.out.println("获取散列hash的所有键：" + jedis.hkeys("hash"));
        System.out.println("获取散列hash的所有值：" + jedis.hvals("hash"));
        System.out.println("将key6保存的值加上一个整数，如果key6不存在则添加key6：" + jedis.hincrBy("hash", "key6", 12));
        //如果原来value不是整数，会报错
//        System.out.println("将key7保存的值加上一个整数，如果key7不存在则添加key7：" + jedis.hincrBy("hash", "key7", 12));
        System.out.println("将key8保存的值加上一个整数，如果key8不存在则添加key8：" + jedis.hincrBy("hash", "key8", 12));
        System.out.println("获取散列hash的所有键值对：" + jedis.hgetAll("hash"));
        System.out.println("删除一个或者多个键值对：" + jedis.hdel("hash", "key7", "key8"));
        System.out.println("获取散列hash的所有键值对：" + jedis.hgetAll("hash"));
        System.out.println("获取散列hash的所有键值对个数：" + jedis.hlen("hash"));
        System.out.println("判断散列hash中是否存在key8：" + jedis.hexists("hash", "key8"));
        System.out.println("判断散列hash中是否存在key2：" + jedis.hexists("hash", "key2"));
        System.out.println("获取map中的单个键对应的值：" + jedis.hmget("hash", "key2"));
        System.out.println("获取map中的多个键对应的值：" + jedis.hmget("hash", "key2", "key3", "key4"));
    }
}
